object Test {

  def main(args: Array[String]): Unit = {
    def foo = {println("foo"); 0}
    lazyDep(X)(foo)
  }

  trait T {
    type U
  }
  object X extends T { type U = Int }

  def lazyDep(t: T)(u: => t.U): Unit = {
    println("1")
    u
    u
  }
}
